package com.qjc.demo.algorithm.LRUOfLinkedHashMap;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @ClassName: LRUCache
 * @Description: 简单用LinkedHashMap来实现的LRU算法的缓存
 * @Author: qjc
 * @Date: 2022/5/9 6:20 PM
 */
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private int cacheSize;

    public LRUCache(int cacheSize) {
        // 这块就是设置一个hashMap的初始大小，同时最后一个true就是让linkedhashmap按照访问顺序来进行排序，最近访问的放在头
        super(16, (float) 0.75, true);
        this.cacheSize = cacheSize;
    }

    // 当map中的数据量大于指定的缓存个数的时候，就自动删除最老的数据
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > cacheSize;
    }
}
